package haoji_juc;

import java.time.chrono.IsoChronology;

/**
 * @program: Dome
 * @description:
 * @className: DomeVolatile
 * @author: rjt99999
 * @version: 1.0.0
 * @create: 2020-08-03 14:44
 **/
public class DomeVolatile {

    /*
    一、volatile 关键字：当多个线程进行操作共享数据时，可以保证内存(主内存)中的数据可见。
 * 					  相较于 synchronized 是一种较为轻量级的同步策略。
 *
 * 注意：
 * 1. volatile 不具备“互斥性”
 *
 * 2. volatile 不能保证*变量*的“原子性
     */


    public static void main(String[] args) {

        threadDome threadDome = new threadDome();

        new Thread(threadDome).start();


        while (true){

            //访问共享数据
            if (threadDome.isFalg() ) {

                System.out.println("------------------");
                break;


            }



        }


    }


}


class threadDome implements Runnable {

    //线程共享数据
  //  private boolean falg = false;

    private  volatile  boolean falg = false;


    @Override
    public void run() {


        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {

            e.printStackTrace();
        }

        falg = true;


        System.out.println("falg = " + isFalg());
        ;


    }

    public boolean isFalg() {
        return falg;
    }

    public void setFalg(boolean falg) {
        this.falg = falg;
    }
}